fastify-helmet

Important security headers for Fastify. It is a tiny wrapper around
helmet.
Install
npm i fastify-helmet
Usage
Simply require this plugin, and the basic security headers will be set.
const fastify = require('fastify')()
const helmet = require('fastify-helmet')
fastify.register(
helmet,
{ contentSecurityPolicy: false }
)
fastify.listen(3000, err => {
if (err) throw err
})
Content-Security-Policy Nonce
fastify-helmet
provide a simple way for csp nonces generation
. You can enable
this behavior by passing { enableCSPNonces: true }
into the options. Then, you can
retrieve the nonces
through reply.cspNonce
.
Note: This feature is implemented inside this module. It is not a valid option or
supported by helmet. If you need to use helmet feature only for csp nonce you
can follow the example here.
Example - Generate by options
fastify.register(
helmet,
{ enableCSPNonces: true }
)
fastify.register(
helmet,
{
enableCSPNonces: true,
contentSecurityPolicy: {
directives: {
...
}
}
}
)
fastify.get('/', function(request, reply) {
reply.cspNonce.script
reply.cspNonce.style
})
Example - Generate by helmet
fastify.register(
helmet,
{
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
scriptSrc: [
function (req, res) {
res.scriptNonce = crypto.randomBytes(16).toString('hex')
}
],
styleSrc: [
function (req, res) {
res.styleNonce = crypto.randomBytes(16).toString('hex')
}
]
}
}
}
)
fastify.get('/', function(request, reply) {
reply.raw.scriptNonce
reply.raw.styleNonce
})
How it works
fastify-helmet
is just a tiny wrapper around helmet that adds an 'onRequest'
hook.
It accepts the same options of Helmet, and you can see more in the helmet documentation.
License
MIT